﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data;

namespace CAD.DAO
{
    public class DAOPersonal
    {
        /// <summary>
        /// Inserta un registro al origen de datos
        /// </summary>
        /// <param name="nombre">Nombre empleado</param>
        /// <returns>Id del empleado insertado</returns>
        /// 


        public int Insertar(string snombre, string Icarnetidentidad, string Itelefono, string sdireccion, DateTime dfechainiciocontrato, DateTime dfechafincontrato, string susuario, string correo, string scontraseña,int concurrencia,int tipoderesponsable)
        {
            List<DbParameter> lstParametros = new List<DbParameter>();
            DbParameter prmA = new SqlParameter();
            prmA.DbType = DbType.Int32;
            prmA.ParameterName = "@LPERSONAL_ID ";
            prmA.Direction = ParameterDirection.Output;
            lstParametros.Add(prmA);

            DbParameter prmB = new SqlParameter();
            prmB.DbType = DbType.String;
            prmB.ParameterName = "@SNOMBRE";
            prmB.Value = snombre;
            prmB.Direction = ParameterDirection.Input;
            lstParametros.Add(prmB);

            DbParameter prmC = new SqlParameter();
            prmC.DbType = DbType.String;
            prmC.ParameterName = "@SCARNETIDENTIDAD";
            prmC.Value = Icarnetidentidad;
            prmC.Direction = ParameterDirection.Input;
            lstParametros.Add(prmC);

            DbParameter prmD = new SqlParameter();
            prmD.DbType = DbType.String;
            prmD.ParameterName = "@STELEFONO";
            prmD.Value = Itelefono;
            prmD.Direction = ParameterDirection.Input;
            lstParametros.Add(prmD);

            DbParameter prms = new SqlParameter();
            prms.DbType = DbType.String;
            prms.ParameterName = "@SDIRECCION";
            prms.Value = sdireccion;
            prms.Direction = ParameterDirection.Input;
            lstParametros.Add(prms);

             DbParameter prme = new SqlParameter();
            prme.DbType = DbType.DateTime;
            prme.ParameterName = "@DTFECHAINICIOCONTRATO_DT";
            prme.Value = dfechainiciocontrato;
            prme.Direction = ParameterDirection.Input;
            lstParametros.Add(prme);

            DbParameter prmf = new SqlParameter();
            prmf.DbType = DbType.DateTime;
            prmf.ParameterName = "@DTFECHAFINCONTRATO_DT";
            prmf.Value = dfechafincontrato;
            prmf.Direction = ParameterDirection.Input;
            lstParametros.Add(prmf);
    DbParameter prmg = new SqlParameter();
            prmg.DbType = DbType.String;
            prmg.ParameterName = "@SUSUARIO";
            prmg.Value = susuario;
            prmg.Direction = ParameterDirection.Input;
            lstParametros.Add(prmg);

            DbParameter prmh = new SqlParameter();
            prmh.DbType = DbType.String;
            prmh.ParameterName = "@SCORREOELECTRONICO";
            prmh.Value = correo;
            prmh.Direction = ParameterDirection.Input;
            lstParametros.Add(prmh);
            
        DbParameter prmi = new SqlParameter();
            prmi.DbType = DbType.String;
            prmi.ParameterName = "@SCONTRASEÑA";
            prmi.Value = scontraseña;
            prmi.Direction = ParameterDirection.Input;
            lstParametros.Add(prmi);
            DbParameter prmgQ = new SqlParameter();
            prmgQ.DbType = DbType.Int32;
            prmgQ.ParameterName = "@ICONCURRENCIA";
            prmgQ.Value = 1;
            prmgQ.Direction = ParameterDirection.Input;
            lstParametros.Add(prmgQ);
            
          
            DbParameter prmgQQ = new SqlParameter();
            prmgQQ.DbType = DbType.String;
            prmgQQ.ParameterName = "@LTIPODERESPONSABLE";
            prmgQQ.Value = tipoderesponsable;
            prmgQQ.Direction = ParameterDirection.Input;
            lstParametros.Add(prmgQQ);
            DbParameter prmk = new SqlParameter();
            prmk.DbType = DbType.Int16;
            prmk.ParameterName = "@iEvento";
            prmk.Value = 1;
            prmk.Direction = ParameterDirection.Input;
            lstParametros.Add(prmk);

            SQLConexion conProxy = new SQLConexion();
            if (conProxy.EjecutarDML(lstParametros, "dbo.SPABM_PERSONAL"))
                return Convert.ToInt32(prmA.Value);
            return -1;

        }
        public int Insertar(string snombre, string Icarnetidentidad, string Itelefono, string sdireccion, DateTime dfechainiciocontrato, DateTime dfechafincontrato, string susuario, string correo, string scontraseña, int concurrencia, int tipoderesponsable, SqlTransaction transaccion)
        {
            List<DbParameter> lstParametros = new List<DbParameter>();
            DbParameter prmA = new SqlParameter();
            prmA.DbType = DbType.Int32;
            prmA.ParameterName = "@LPERSONAL_ID ";
            prmA.Direction = ParameterDirection.Output;
            lstParametros.Add(prmA);

            DbParameter prmB = new SqlParameter();
            prmB.DbType = DbType.String;
            prmB.ParameterName = "@SNOMBRE";
            prmB.Value = snombre;
            prmB.Direction = ParameterDirection.Input;
            lstParametros.Add(prmB);

            DbParameter prmC = new SqlParameter();
            prmC.DbType = DbType.String;
            prmC.ParameterName = "@SCARNETIDENTIDAD";
            prmC.Value = Icarnetidentidad;
            prmC.Direction = ParameterDirection.Input;
            lstParametros.Add(prmC);

            DbParameter prmD = new SqlParameter();
            prmD.DbType = DbType.String;
            prmD.ParameterName = "@STELEFONO";
            prmD.Value = Itelefono;
            prmD.Direction = ParameterDirection.Input;
            lstParametros.Add(prmD);

            DbParameter prms = new SqlParameter();
            prms.DbType = DbType.String;
            prms.ParameterName = "@SDIRECCION";
            prms.Value = sdireccion;
            prms.Direction = ParameterDirection.Input;
            lstParametros.Add(prms);
            DbParameter prmgQ = new SqlParameter();
            prmgQ.DbType = DbType.String;
            prmgQ.ParameterName = "@ICONCURRENCIA";
            prmgQ.Value = 1;
            prmgQ.Direction = ParameterDirection.Input;
            lstParametros.Add(prmgQ);
            DbParameter prme = new SqlParameter();
            prme.DbType = DbType.DateTime;
            prme.ParameterName = "@DTFECHAINICIOCONTRATO_DT";
            prme.Value = dfechainiciocontrato;
            prme.Direction = ParameterDirection.Input;
            lstParametros.Add(prme);

            DbParameter prmf = new SqlParameter();
            prmf.DbType = DbType.DateTime;
            prmf.ParameterName = "@DTFECHAFINCONTRATO_DT";
            prmf.Value = dfechafincontrato;
            prmf.Direction = ParameterDirection.Input;
            lstParametros.Add(prmf);

            DbParameter prmh = new SqlParameter();
            prmh.DbType = DbType.Int64;
            prmh.ParameterName = "@LTIPODERESPONSABLE";
            prmh.Value = tipoderesponsable;
            prmh.Direction = ParameterDirection.Input;
            lstParametros.Add(prmh);

            DbParameter prmg = new SqlParameter();
            prmg.DbType = DbType.String;
            prmg.ParameterName = "@SUSUARIO";
            prmg.Value = susuario;
            prmg.Direction = ParameterDirection.Input;
            lstParametros.Add(prmg);

            DbParameter prmi = new SqlParameter();
            prmi.DbType = DbType.String;
            prmi.ParameterName = "@SCONTRASEÑA";
            prmi.Value = scontraseña;
            prmi.Direction = ParameterDirection.Input;
            lstParametros.Add(prmi);

            DbParameter prmgQ1 = new SqlParameter();
            prmgQ1.DbType = DbType.String;
            prmgQ1.ParameterName = "@ICONCURRENCIA";
            prmgQ1.Value = concurrencia;
            prmgQ1.Direction = ParameterDirection.Input;
            lstParametros.Add(prmgQ1);

            DbParameter prmgQQ = new SqlParameter();
            prmgQQ.DbType = DbType.String;
            prmgQQ.ParameterName = "@LTIPODERESPONSABLE";
            prmgQQ.Value = tipoderesponsable;
            prmgQQ.Direction = ParameterDirection.Input;
            lstParametros.Add(prmgQQ);
            DbParameter prmk = new SqlParameter();
            prmk.DbType = DbType.Int16;
            prmk.ParameterName = "@iEvento";
            prmk.Value = 1;
            prmk.Direction = ParameterDirection.Input;
            lstParametros.Add(prmk);


            SQLConexion conProxy = new SQLConexion();
            if (conProxy.EjecutarDML(lstParametros, "dbo.SPABM_PERSONAL", transaccion))
                return Convert.ToInt32(prmA.Value);
            return -1;

        }
        public bool Actualizar(int codigo,string snombre, string Icarnetidentidad, string Itelefono, string sdireccion, DateTime dfechainiciocontrato, DateTime dfechafincontrato, string susuario, string correo, string scontraseña, int concurrencia, int tipoderesponsable)
        {
            List<DbParameter> lstParametros = new List<DbParameter>();
          
            DbParameter prmBa = new SqlParameter();
            prmBa.DbType = DbType.String;
            prmBa.ParameterName = "@LPERSONAL_ID";
            prmBa.Value = snombre;
            prmBa.Direction = ParameterDirection.Input;
            lstParametros.Add(prmBa);

            DbParameter prmB = new SqlParameter();
            prmB.DbType = DbType.String;
            prmB.ParameterName = "@SNOMBRE";
            prmB.Value = snombre;
            prmB.Direction = ParameterDirection.Input;
            lstParametros.Add(prmB);

            DbParameter prmC = new SqlParameter();
            prmC.DbType = DbType.String;
            prmC.ParameterName = "@SCARNETIDENTIDAD";
            prmC.Value = Icarnetidentidad;
            prmC.Direction = ParameterDirection.Input;
            lstParametros.Add(prmC);

            DbParameter prmD = new SqlParameter();
            prmD.DbType = DbType.String;
            prmD.ParameterName = "@STELEFONO";
            prmD.Value = Itelefono;
            prmD.Direction = ParameterDirection.Input;
            lstParametros.Add(prmD);

            DbParameter prms = new SqlParameter();
            prms.DbType = DbType.String;
            prms.ParameterName = "@SDIRECCION";
            prms.Value = sdireccion;
            prms.Direction = ParameterDirection.Input;
            lstParametros.Add(prms);

            DbParameter prme = new SqlParameter();
            prme.DbType = DbType.DateTime;
            prme.ParameterName = "@DTFECHAINICIOCONTRATO_DT";
            prme.Value = dfechainiciocontrato;
            prme.Direction = ParameterDirection.Input;
            lstParametros.Add(prme);

            DbParameter prmf = new SqlParameter();
            prmf.DbType = DbType.DateTime;
            prmf.ParameterName = "@DTFECHAFINCONTRATO_DT";
            prmf.Value = dfechafincontrato;
            prmf.Direction = ParameterDirection.Input;
            lstParametros.Add(prmf);
            DbParameter prmg = new SqlParameter();
            prmg.DbType = DbType.String;
            prmg.ParameterName = "@SUSUARIO";
            prmg.Value = susuario;
            prmg.Direction = ParameterDirection.Input;
            lstParametros.Add(prmg);

            DbParameter prmh = new SqlParameter();
            prmh.DbType = DbType.String;
            prmh.ParameterName = "@SCORREOELECTRONICO";
            prmh.Value = correo;
            prmh.Direction = ParameterDirection.Input;
            lstParametros.Add(prmh);

            DbParameter prmi = new SqlParameter();
            prmi.DbType = DbType.String;
            prmi.ParameterName = "@SCONTRASEÑA";
            prmi.Value = scontraseña;
            prmi.Direction = ParameterDirection.Input;
            lstParametros.Add(prmi);
            DbParameter prmgQ = new SqlParameter();
            prmgQ.DbType = DbType.Int32;
            prmgQ.ParameterName = "@ICONCURRENCIA";
            prmgQ.Value = 1;
            prmgQ.Direction = ParameterDirection.Input;
            lstParametros.Add(prmgQ);


            DbParameter prmgQQ = new SqlParameter();
            prmgQQ.DbType = DbType.String;
            prmgQQ.ParameterName = "@LTIPODERESPONSABLE";
            prmgQQ.Value = tipoderesponsable;
            prmgQQ.Direction = ParameterDirection.Input;
            lstParametros.Add(prmgQQ);
            DbParameter prmk = new SqlParameter();
            prmk.DbType = DbType.Int16;
            prmk.ParameterName = "@iEvento";
            prmk.Value = 1;
            prmk.Direction = ParameterDirection.Input;
            lstParametros.Add(prmk);

            SQLConexion conProxy = new SQLConexion();
            return conProxy.EjecutarDML(lstParametros, "dbo.SPABM_PERSONAL");
        }
        public bool Eliminar(int iPersonal_id)
        {
         
            List<DbParameter> lstParametros = new List<DbParameter>();
            DbParameter prmA = new SqlParameter();
            prmA.DbType = DbType.Int32;
            prmA.ParameterName = "@LPERSONAL_ID";
            prmA.Value = iPersonal_id;
            prmA.Direction = ParameterDirection.Input;
            lstParametros.Add(prmA);

            DbParameter prmk = new SqlParameter();
            prmk.DbType = DbType.Int16;
            prmk.ParameterName = "@iEvento";
            prmk.Value = 3;
            prmk.Direction = ParameterDirection.Input;
            lstParametros.Add(prmk);
            SQLConexion conProxy = new SQLConexion();
            return conProxy.EjecutarDML(lstParametros, "dbo.SPABM_PERSONAL");
        }
        public DataSet TraerPersonal()
        {
            List<DbParameter> lstParametros = new List<DbParameter>();
            DbParameter prmk = new SqlParameter();
            prmk.DbType = DbType.Int16;
            prmk.ParameterName = "@iEvento";
            prmk.Value = 4;
            prmk.Direction = ParameterDirection.Input;
            lstParametros.Add(prmk);
            SQLConexion conProxy = new SQLConexion();
            return conProxy.EjecutarConsulta(lstParametros, "dbo.SPABM_PERSONAL");
        }
        public DataSet TraerPersonalXId(int iPersonal_id)
        {
            List<DbParameter> lstParametros = new List<DbParameter>();

            DbParameter prmA = new SqlParameter();
            prmA.DbType = DbType.Int32;
            prmA.ParameterName = "@LPERSONAL_ID";
            prmA.Value = iPersonal_id;
            prmA.Direction = ParameterDirection.Input;
            lstParametros.Add(prmA);
            DbParameter prmk = new SqlParameter();
            prmk.DbType = DbType.Int16;
            prmk.ParameterName = "@iEvento";
            prmk.Value = 5;
            prmk.Direction = ParameterDirection.Input;
            lstParametros.Add(prmk);
            SQLConexion conProxy = new SQLConexion();
            return conProxy.EjecutarConsulta(lstParametros, "dbo.SPABM_PERSONAL");
        }
        public DataSet VerificarContrasena(string usun,string contrasena)
        {
            List<DbParameter> lstParametros = new List<DbParameter>();

            DbParameter prmA = new SqlParameter();
            prmA.DbType = DbType.Int32;
            prmA.ParameterName = "@SUSUARIO";
            prmA.Value = usun;
            prmA.Direction = ParameterDirection.Input;
            lstParametros.Add(prmA);
            DbParameter prmA1 = new SqlParameter();
            prmA1.DbType = DbType.Int32;
            prmA1.ParameterName = "@SCONTRASEÑA";
            prmA1.Value = contrasena;
            prmA1.Direction = ParameterDirection.Input;
            lstParametros.Add(prmA);
            DbParameter prmk = new SqlParameter();
            prmk.DbType = DbType.Int16;
            prmk.ParameterName = "@iEvento";
            prmk.Value = 9;
            prmk.Direction = ParameterDirection.Input;
            lstParametros.Add(prmk);
            SQLConexion conProxy = new SQLConexion();
            return conProxy.EjecutarConsulta(lstParametros, "dbo.SPABM_PERSONAL");
        }
        public DataSet Traerlogin(string usu,string contra)
        {
            List<DbParameter> lstParametros = new List<DbParameter>();

            DbParameter prmA1 = new SqlParameter();
            prmA1.DbType = DbType.AnsiString;
            prmA1.ParameterName = "@SCONTRASEÑA";
            prmA1.Value = contra;
            prmA1.Direction = ParameterDirection.Input;
            lstParametros.Add(prmA1);
            DbParameter prmA = new SqlParameter();
            prmA.DbType = DbType.AnsiString;
            prmA.ParameterName = "@SUSUARIO";
            prmA.Value = usu;
            prmA.Direction = ParameterDirection.Input;
            lstParametros.Add(prmA);
            
            DbParameter prmk = new SqlParameter();
            prmk.DbType = DbType.Int16;
            prmk.ParameterName = "@iEvento";
            prmk.Value = 8;
            prmk.Direction = ParameterDirection.Input;
            lstParametros.Add(prmk);
            SQLConexion conProxy = new SQLConexion();
            return conProxy.EjecutarConsulta(lstParametros, "dbo.SPABM_PERSONAL");
        }
        public DataSet TraerPersonalXNombre(string snombre)
        {
            List<DbParameter> lstParametros = new List<DbParameter>();

            DbParameter prmA = new SqlParameter();
            prmA.DbType = DbType.String;
            prmA.ParameterName = "@SNOMBRE";
            prmA.Value = snombre;
            prmA.Direction = ParameterDirection.Input;
            lstParametros.Add(prmA);
            DbParameter prmk = new SqlParameter();
            prmk.DbType = DbType.Int16;
            prmk.ParameterName = "@iEvento";
            prmk.Value = 7;
            prmk.Direction = ParameterDirection.Input;
            lstParametros.Add(prmk);
            SQLConexion conProxy = new SQLConexion();
            return conProxy.EjecutarConsulta(lstParametros, "dbo.SPABM_PERSONAL");
        }


    }
}
